import random


def guess_number_1():
    print("=== 猜数字游戏 ===")
    print("目标数字在1-100之间！")
    print("-" * 30)
    number = random.randint(1, 100)

    while number:
        guess = int(input("请开始猜测："))
        if guess > number:
            print("大了！")
        elif guess < number:
            print("小了！")
        elif guess == number:
            print(f"恭喜你！猜对了！正确数字是：{number}")
            break
        else:
            print("请输入正确的数字！")


def guess_number_2():
    print("=== 猜数字游戏 ===")
    print("目标数字在1-100之间！")
    print("起始金币：5000，猜错扣500，猜对奖励3000")
    print("-" * 30)

    # 初始化金币
    coins = 5000
    number = random.randint(1, 100)

    while coins >= 500:  # 确保有足够金币继续游戏
        print(f"当前金币：{coins}")
        try:
            guess = int(input("请开始猜测："))

            if guess > number:
                print("大了！")
                coins -= 500
                print(f"扣除了500金币！")
            elif guess < number:
                print("小了！")
                coins -= 500
                print(f"扣除了500金币！")
            elif guess == number:
                coins += 3000
                print(f"恭喜你！猜对了！正确数字是：{number}")
                print(f"获得了3000金币奖励！当前金币：{coins}")

                # 询问是否继续游戏
                while True:
                    continue_game = input("是否继续游戏？(y/n): ").lower()
                    if continue_game == 'y':
                        coins -= 500  # 开始新游戏扣除500金币作为入场费
                        number = random.randint(1, 100)
                        print("-" * 30)
                        print("新游戏开始！")
                        break
                    elif continue_game == 'n':
                        print(f"游戏结束！最终金币：{coins}")
                        return
                    else:
                        print("请输入 y 或 n")

        except ValueError:
            print("请输入正确的数字！")

    # 金币不足时退出游戏
    print(f"金币不足！游戏结束。最终金币：{coins}")


def guess_number_3():
    # 初始化游戏数据
    coins = 5000  # 起始金币
    total_games = 0
    games_won = 0

    print("=== 猜数字游戏（金币版）===")
    print("-" * 30)

    while coins >= 500:  # 确保有足够金币进行下一次猜测
        print(f"当前金币：{coins}金币")
        print("1. 开始新游戏")
        print("2. 查看游戏说明")
        print("3. 退出游戏")

        choice = input("请选择操作（1-3）：")

        if choice == '1':
            coins, won = play_single_round(coins)
            total_games += 1
            if won:
                games_won += 1

        elif choice == '2':
            show_game_instructions()

        elif choice == '3':
            print("感谢游玩！")
            break

        else:
            print("无效选择，请重新输入！")

    # 游戏结束统计
    print("\n" + "=" * 40)
    print("          游戏结束")
    print("=" * 40)
    print(f"最终金币：{coins}金币")
    print(f"游戏统计：共玩{total_games}局，获胜{games_won}局")

    if coins < 500:
        print(" 金币不足，无法继续游戏")


def play_single_round(coins):
    """
    进行一局游戏
    返回：(剩余金币, 是否获胜)
    """
    target_number = random.randint(1, 100)
    guess_count = 0
    cost_per_guess = 500
    reward = 3000

    print(f"\n 新游戏开始！目标数字在1-100之间")
    print(f" 当前金币：{coins}金币")
    print(f" 猜错扣{cost_per_guess}金币，猜对奖{reward}金币")

    while coins >= cost_per_guess:
        try:
            user_guess = int(input(f"第{guess_count + 1}次猜测："))
            guess_count += 1

            if user_guess > target_number:
                coins -= cost_per_guess
                print(" 大了！")
                print(f" 扣除{cost_per_guess}金币，剩余金币：{coins}")

            elif user_guess < target_number:
                coins -= cost_per_guess
                print(" 小了！")
                print(f" 扣除{cost_per_guess}金币，剩余金币：{coins}")

            else:
                coins += reward
                print(f" 恭喜猜中！幸运数字：{target_number}")
                print(f" 获得{reward}金币奖励！")
                print(f" 最终金币：{coins}金币")
                print(f" 本局共猜了{guess_count}次")
                return coins, True

            # 检查金币是否足够继续
            if coins < cost_per_guess:
                print(f" 金币不足{cost_per_guess}，无法继续猜测！")
                break

            # 给出提示
            print(f" 提示：你还有{coins // cost_per_guess}次猜测机会")

        except ValueError:
            print(" 输入无效，请输入整数！")
            # 无效输入不扣金币

    print(f" 游戏结束！幸运数字是：{target_number}")
    return coins, False


def show_game_instructions():
    print("\n" + "=" * 40)
    print("          游戏说明")
    print("=" * 40)
    print(" 金币系统：")
    print("  - 起始资金：5000金币")
    print("  - 每次猜错：扣除500金币")
    print("  - 猜对奖励：3000金币")
    print("  - 游戏结束：金币不足500时")
    print("\n 游戏规则：")
    print("  - 系统生成1-100的随机数")
    print("  - 你需要猜测这个数字")
    print("  - 系统会提示大了或小了")
    print("  - 在金币用完前猜中即获胜")
    print("=" * 40)
    input("按回车键返回主菜单...")

if __name__ == '__main__':
    # 运行猜数字
    # guess_number_1()
    # 运行猜数字金币版
    # guess_number_2()
    # 运行猜数字完整版
    guess_number_3()



